Software developers write source code in several different programming languages. Each programming language has distinct syntax and semantics. Coding tools including code browsers, Integrated Development Environments (IDES), and historical analysis tools need to be able to understand source code languages in order for these tools to be useful to the software developers. Most tools are good at representing one or two languages, but have difficulty supporting other languages. In order to have adequate tool support across all programming languages, there should be a single code model that can be used by all tools. Representing semantics and syntax of source code for all languages requires a complex data model and a service that understand each language's nuances. The data model and service also need to be able to index elements and display relationships among elements from any programming language and across languages.